﻿/// <summary>
/// Create By:  Alex Sanchez Sanchez
/// Date:       20/11/2012
/// Time:       09:10
/// Update:     
/// Time Update: 
/// Fix Bugs Descripion:
/// 
/// </summary>

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using LayerData.DataBaseManager;
using LayerEntity.Persona.Clientes;
using LayerEntity.Persona.Proveedores ;
using LayerEntity.Persona.RecursosHumanos ;
using LayerEntity.Sistema ;
using LayerEntity.Hotel;
using Npgsql;
using LayerEntity.Almacen;

namespace LayerData.Common
{
        
    /// <summary>
    /// Clase que administra tablas Comunes de la base de datos.
    /// Las Tablas a manejar son: 
    /// Tipos de Documentos, Documentos, Areas, Cargos, Estados, Estados Civiles, entre otros.
    /// </summary>
    public class CommonObjectsList
    {
        #region Variables
        readonly string mensajeExecuteReader = "Error al Recuperar #replace, revise lo Siguiente: ";

        readonly IPostgreSqlConnectionInfo connectionInfo;
        public IPostgreSqlConnectionInfo CurrentConection { get; set; }
        #endregion

        #region Contructores
        public CommonObjectsList()
        {
            this.connectionInfo = ObjectFactory.CreateConnectionInfo();
        }

        public CommonObjectsList(IPostgreSqlConnectionInfo con)
        {
            this.connectionInfo = con;
            this.CurrentConection = con;
        }

        #endregion

        #region Funciones Publicas de Listados

        /// <summary>
        /// Obtiene los tipos de documentos.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Tipos de Documentos Registrados.
        /// </returns>
        public List<ETipoDocumento> GetTipoDocumentos()
        {
            List<ETipoDocumento> tipoDocumentos = new List<ETipoDocumento>();
            NpgsqlDataReader dr = null;
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo,
                    CommandType.Text, "select * from planillas.tb_tipodocumento;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tipoDocumentos.Add(new ETipoDocumento(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Los Tipos de Documentos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }

            return tipoDocumentos;
        }

        /// <summary>
        /// Obtiene los documentos registrados.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los documentos registrado en la base de datos.
        /// </returns>
        public List<EDocumento> GetDocumentos()
        {
            NpgsqlDataReader dr = null;
            List<EDocumento> documentos = new List<EDocumento>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_documento");
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        documentos.Add(new EDocumento(dr));
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Los Documentos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return documentos;
        }

        /// <summary>
        /// Obitiene los estados registrados.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Resultados del Comando.
        /// </returns>
        public List<EEstado> GetEstados()
        {
            NpgsqlDataReader dr = null;
            List<EEstado> estado = new List<EEstado>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from COMMON.tb_estado");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            estado.Add(new EEstado(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Estado"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            
            return estado ;
        }

        /// <summary>
        /// Obtiene las formas de pago registradas
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los resultados del Comando.
        /// </returns>
        public List<EFormaPago> GetFormasDePago()
        {
            NpgsqlDataReader dr = null;
            List<EFormaPago> fpagos = new List<EFormaPago>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_formapago");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            fpagos.Add(new EFormaPago(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Formas de Pago"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return fpagos ;
        }

        /// <summary>
        /// Obtiene los tipos de Monedas Registrados
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Resultados del Comando
        /// </returns>
        public List<EMoneda> GetMonedas()
        {
            NpgsqlDataReader dr = null;
            List<EMoneda> moneda = new List<EMoneda>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.v_listar_moneda");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            moneda.Add(new EMoneda(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Las Monedas"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return moneda ;
        }

        /// <summary>
        /// Obtiene los Ubigeos >Registrados.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Resultados del Comando
        /// </returns>
        public List<EUbigeo> GetUbigeo()
        {
            NpgsqlDataReader dr = null;
            List<EUbigeo> ubigeo = new List<EUbigeo>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_ubigeo");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            ubigeo.Add(new EUbigeo(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Ubigeos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return ubigeo ;
        }
        
        /// <summary>
        /// Obtiene los Hoteles >.Registrados
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Resultados del Comando
        /// </returns>
        public List<EHotel> GetHoteles()
        {
            NpgsqlDataReader dr = null;
            List<EHotel> ubigeo = new List<EHotel>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from v_listar_hotel");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            ubigeo.Add(new EHotel(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Ubigeos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return ubigeo;
        }
        public List<EEmpresa> GetEmpresas()
        {
            NpgsqlDataReader dr = null;
            List<EEmpresa> empresa = new List<EEmpresa>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from COMMON.V_LISTAR_EMPRESA");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            empresa.Add(new EEmpresa(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Ubigeos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return empresa;
        }
        public DataTable GetListaSucursal(EHotel obj)
        {
            DataTable dtbD;
            NpgsqlConnection con = null;

            AccesoBD db = new AccesoBD();
            try
            {
                con = CurrentConection.GetPostgreSqlConnection();
                dtbD = db.EjecutaModelView("hotel.v_listar_sucursal", new object[] { obj.Condicion }, con);
            }
            catch (NpgsqlException ex)
            {
                CurrentConection.CloseConnection(con);
                Console.Write(ex.Message + "/" + ex.Source);
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Productos"), ex);
                return null;
            }
            finally
            {
                CurrentConection.CloseConnection(con);
            }
            return dtbD;
        }

        public DataTable GetListaSeriesDocumento(ESistema obj)
        {
            DataTable dtbD;
            NpgsqlConnection con = null;

            AccesoBD db = new AccesoBD();
            try
            {
                con = CurrentConection.GetPostgreSqlConnection();
                dtbD = db.EjecutaModelView("common.v_listar_series_docs", new object[] { obj.Condicion }, con);
            }
            catch (NpgsqlException ex)
            {
                CurrentConection.CloseConnection(con);
                Console.Write(ex.Message + "/" + ex.Source);
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Productos"), ex);
                return null;
            }
            finally
            {
                CurrentConection.CloseConnection(con);
            }
            return dtbD;
        }
        #endregion

        #region Funciones de Lista Persona
        /// <summary>
        /// Obtiene las Administradores de Fondo de Pensiones Registradas.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los resultados del Comando.
        /// </returns>
        public List<EAfp> GetAfps()
        {
            NpgsqlDataReader dr = null;
            List<EAfp> afps = new List<EAfp>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_afp");
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        afps.Add(new EAfp(dr));
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las APF's"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return afps;
        }

        /// <summary>
        /// Obtiene las Areas Registradas.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los resultados del Comando.
        /// </returns>
        public List<EAreas> GetAreas()
        {
            NpgsqlDataReader dr = null;
            List<EAreas> areas = new List<EAreas>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_areas");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            areas.Add(new EAreas(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Areas"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }

            return areas;
        }

        /// <summary>
        /// Obtiene los Cargos Registrados
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los Resultados del Comando
        /// </returns>
        public List<ECargos> GetCargos()
        {
            NpgsqlDataReader dr = null;
            List<ECargos> cargos = new List<ECargos>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_cargos");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            cargos.Add(new ECargos(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Cargos"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return cargos;
        }

        /// <summary>
        /// Obtiene los Grados de Instruccion Registrados.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los resultados del Comando
        /// </returns>
        public List<EGradoInstruccion> GetGradoInstruccion()
        {
            NpgsqlDataReader dr = null;
            List<EGradoInstruccion> grados = new List<EGradoInstruccion>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_gradoinstruccion");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            grados.Add(new EGradoInstruccion(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Los Grados de Instruccion"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }

            return grados;
        }

        /// <summary>
        /// Obtiene las Profesiones Registradas.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los resultados del Comando
        /// </returns>
        public List<EProfesion> GetProfesiones()
        {
            NpgsqlDataReader dr = null;
            List<EProfesion> profesion = new List<EProfesion>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_profesiones");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            profesion.Add(new EProfesion(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Las Profesiones "), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return profesion;
        }

        /// <summary>
        /// Obtiene los tipos de clientes registrados.
        /// </summary>
        /// <returns>
        /// Un <see cref="T:List"/> con los tipos de Clientes Registrados.
        /// </returns>
        public List<ETipoCliente> GetTipoClientes()
        {
            List<ETipoCliente> tipoClientes = new List<ETipoCliente>();
            NpgsqlDataReader dr = null;
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from ventas.tb_tipo_cliente;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tipoClientes.Add(new ETipoCliente(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Los Tipos de Clientes"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }

            return tipoClientes;
        }

        public List<ETipoProveedor> GetTipoProveedor()
        {
            List<ETipoProveedor> tipoProveedor = new List<ETipoProveedor>();
            NpgsqlDataReader dr = null;
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from compras.tb_tipo_proveedores;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tipoProveedor.Add(new ETipoProveedor(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Los Tipos de Proveedores"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }

            return tipoProveedor;
        }

        public List<EEstadoCivil> GetEstadosCiviles() {
            NpgsqlDataReader dr = null;
            List<EEstadoCivil> ecv = new List<EEstadoCivil>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from planillas.tb_estadocivil");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            ecv.Add(new EEstadoCivil(dr));
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Las Profesiones "), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return ecv;
        }



        public List<EFormaPago> GetFormaPago()
        {
            NpgsqlDataReader dr = null;
            List<EFormaPago> formapago = new List<EFormaPago>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.v_listar_formpago");
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        formapago.Add(new EFormaPago(dr));
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Formas de Pago"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return formapago;
        }

        public List<ETarjetaCredito> GetTarjetaCredito()
        {
            NpgsqlDataReader dr = null;
            List<ETarjetaCredito> tarjeta = new List<ETarjetaCredito>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_tarjetacredito");
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        tarjeta.Add(new ETarjetaCredito(dr));
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Tarjetas de Credito"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return tarjeta;
        }


        public DataTable GetFactCredito(ESistema obj)
        {
            DataTable dtb;
            NpgsqlConnection con = null;

            AccesoBD db = new AccesoBD();
            try
            {
                con = CurrentConection.GetPostgreSqlConnection();
                dtb = db.EjecutaModelView("creditos.v_listar_tasa_credito", new object[] { obj.Condicion }, con);
            }
            catch (NpgsqlException ex)
            {
                CurrentConection.CloseConnection(con);
                Console.Write(ex.Message + "/" + ex.Source);
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Productos"), ex);
                return null;
            }
            finally
            {
                CurrentConection.CloseConnection(con);
            }
            return dtb;
        }

        public DataTable GetListadoPersonal(ESistema obj)
        {
            DataTable dtb;
            NpgsqlConnection con = null;

            AccesoBD db = new AccesoBD();
            try
            {
                con = CurrentConection.GetPostgreSqlConnection();
                dtb = db.EjecutaModelView("planillas.v_listar_personal_empresa", new object[] { obj.Condicion }, con);
            }
            catch (NpgsqlException ex)
            {
                CurrentConection.CloseConnection(con);
                Console.Write(ex.Message + "/" + ex.Source);
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Productos"), ex);
                return null;
            }
            finally
            {
                CurrentConection.CloseConnection(con);
            }
            return dtb;
        }

        public List<ETipoOperacion> GetOperaciones() {
            NpgsqlDataReader dr = null;
            List<ETipoOperacion> lista = new List<ETipoOperacion>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_operacion");
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        lista.Add(new ETipoOperacion(dr));
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", "Las Formas de Pago"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return lista;
        }

        public DataTable GetListadoTipoOperacion(ESistema obj)
        {
            DataTable dtb;
            NpgsqlConnection con = null;

            AccesoBD db = new AccesoBD();
            try
            {
                con = CurrentConection.GetPostgreSqlConnection();
                dtb = db.EjecutaModelView("common.v_listar_tb_operacion", new object[] { obj.Condicion }, con);
            }
            catch (NpgsqlException ex)
            {
                CurrentConection.CloseConnection(con);
                Console.Write(ex.Message + "/" + ex.Source);
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Los Productos"), ex);
                return null;
            }
            finally
            {
                CurrentConection.CloseConnection(con);
            }
            return dtb;
        }


        public List<EIgv> GetIgv()
        {
            NpgsqlDataReader dr = null;
            List<EIgv> igv = new List<EIgv>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_igv order by id_igv desc ;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            igv.Add(new EIgv(dr));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Planilla"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return igv;
        }

        public List<ETipoCambio> GetTipoCambio()
        {
            NpgsqlDataReader dr = null;
            List<ETipoCambio> tc = new List<ETipoCambio>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_tipocambio order by id_tipocambio desc;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tc.Add(new ETipoCambio(dr));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Planilla"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return tc;
        }

        public List<ETranzaccion> GetTranzaccion()
        {
            NpgsqlDataReader dr = null;
            List<ETranzaccion> tc = new List<ETranzaccion>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from common.tb_tranzaccion order by id_tranzaccion asc;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tc.Add(new ETranzaccion(dr));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Planilla"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return tc;
        }
        public List<ETipoInventario> GetTipoInventario()
        {
            NpgsqlDataReader dr = null;
            List<ETipoInventario> tc = new List<ETipoInventario>();
            try
            {
                dr = PostgreSqlHelper.ExecuteReader(this.connectionInfo, CommandType.Text, "select * from almacen.tb_tipoinventario;");
                if (dr != null)
                {
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            tc.Add(new ETipoInventario(dr));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                DataBaseUtils.PrintMessajeError(this.mensajeExecuteReader.Replace("#replace", " Tipo de Inventario"), ex);
            }
            finally
            {
                DataBaseUtils.CloseNPgsqlDataReader(dr);
            }
            return tc;
        }
        #endregion
    }
}